import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashMap;
import javax.swing.SwingConstants;
import java.awt.List;

/**
 * Fenêtre de saisie d'un ouvrage Code du JFrame généré par Window
 * Builder/Swing Designer.
 * 
 * @author IUT, A.Culet
 * @version 1.0
 */
public class VueSaisieOuvrage extends Vue  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textFieldIsbn;
	private JTextField textFieldTitre;
	private JTextField textFieldDate;
	private JTextField textFieldEditeur;
	private JButton buttonEnreg;
	private JButton buttonAnnuler;
	private JButton buttonSelec;
	private JButton buttonAddAuteur;
	private Auteur[] _auteurs;
	private List listAuteur;
	//private HashMap<Integer,Auteur> _hashAuteur;
	
	/**
	 * Create the frame.
	 */

	public VueSaisieOuvrage(Controleur controleur) {
		super(controleur);
		setTitle("Enregistrement d'un nouvel ouvrage");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 522, 470);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNewLabel = new JLabel("Isbn");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(105, 65, 61, 15);
		contentPane.add(lblNewLabel);

		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(172, 63, 141, 19);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);

		JLabel lblNewLabel_1 = new JLabel("Titre");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(99, 96, 67, 15);
		contentPane.add(lblNewLabel_1);

		textFieldTitre = new JTextField();
		textFieldTitre.setBounds(172, 94, 225, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);

		buttonEnreg = new JButton("Enregistrer");
		buttonEnreg.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String isbn = textFieldIsbn.getText();
				String titre = textFieldTitre.getText();
				Auteur[] auteur = _auteurs;				
				String editeur = textFieldEditeur.getText();
				String dateEdition = textFieldDate.getText();
				getControleur().nouvOuvrage(isbn, titre, editeur,dateEdition,auteur);
			}
		});
		buttonEnreg.setBounds(302, 360, 107, 25);
		contentPane.add(buttonEnreg);

		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueSaisieOuvrage.this);
			}
		});
		buttonAnnuler.setBounds(302, 396, 107, 25);
		contentPane.add(buttonAnnuler);

		JLabel lblNewLabel_2 = new JLabel("Date Edition (MM/AAAA)");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_2.setBounds(10, 333, 154, 33);
		contentPane.add(lblNewLabel_2);

		textFieldDate = new JTextField();
		textFieldDate.setBounds(172, 339, 114, 19);
		contentPane.add(textFieldDate);
		textFieldDate.setColumns(10);

		JLabel lblnomAuteur = new JLabel("Auteur");
		lblnomAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblnomAuteur.setBounds(85, 122, 81, 15);
		contentPane.add(lblnomAuteur);

		JLabel lblEditeur = new JLabel("Editeur");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(105, 307, 61, 15);
		contentPane.add(lblEditeur);

		textFieldEditeur = new JTextField();
		textFieldEditeur.setColumns(10);
		textFieldEditeur.setBounds(179, 304, 218, 19);
		contentPane.add(textFieldEditeur);

		buttonAddAuteur = new JButton("Ajouter Auteur");
		buttonAddAuteur.setBounds(312, 270, 130, 23);
		contentPane.add(buttonAddAuteur);
		buttonAddAuteur.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterAuteur();				
			}
		});

		buttonSelec = new JButton("Selectionner");
		buttonSelec.setBounds(172, 270, 130, 23);
		contentPane.add(buttonSelec);
		
		listAuteur = new List();
		listAuteur.setMultipleSelections(true);
		listAuteur.setBounds(172, 122, 225, 142);
		contentPane.add(listAuteur);
		buttonSelec.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				_auteurs=getControleur().auteurSelec(listAuteur.getSelectedItems());
				if (_auteurs != null)
					setEtat(Vue.finale);				
				else
					setEtat(Vue.initiale);
			}
		});
		
		rafraichissement();	
		
	}
	public void rafraichissement(){
		listAuteur.clear();
		HashMap<Integer, Auteur> _auteurs;
		_auteurs = getControleur().getAuteurs();		
		for(int i=1; i<=_auteurs.size();i++)			
			listAuteur.add(_auteurs.get(i).getNom()+" "+_auteurs.get(i).getPrenom());				
	}

	public void setEtat(int etat) {
		switch (etat) {
		case initiale: {			
			buttonEnreg.setEnabled(false);
			buttonAnnuler.setEnabled(true);	
			buttonSelec.setEnabled(true);
			buttonAddAuteur.setEnabled(true);
			break;
		}
		case finale: {
			buttonSelec.setEnabled(false);
			buttonAddAuteur.setEnabled(false);
			buttonEnreg.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			break;
		}
		}
	}
}
